package com.doufeng.common.util;

import cn.hutool.crypto.digest.BCrypt;

/**
 * BCrypt工具类
 * 
 * 用于密码的加密和验证，使用BCrypt算法确保密码安全存储
 * BCrypt是一种密码散列函数，专为密码哈希设计，具有以下特点：
 * 1. 自动加盐，防止彩虹表攻击
 * 2. 计算复杂度可调，抵抗暴力破解
 * 3. 相同明文每次生成的密文不同
 */
public class BCryptUtil {
    /**
     * 对原始密码进行BCrypt加密
     * 
     * @param raw 原始密码
     * @return 加密后的密码
     */
    public static String encode(String raw) {
        return BCrypt.hashpw(raw, BCrypt.gensalt());
    }
    
    /**
     * 验证原始密码与加密密码是否匹配
     * 
     * @param raw 原始密码
     * @param encoded 加密后的密码
     * @return 是否匹配
     */
    public static boolean matches(String raw, String encoded) {
        return BCrypt.checkpw(raw, encoded);
    }
}